home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / msdos / raytrace / pov / gen / jtg12 / jtg.cpp next >
C/C++ Source or Header  |  1993-01-05  |  4KB  |  167 lines

  1. #include <stdio.h>    /* libraries */
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <string.h>
  5. #include <graphics.h>
  6. #include <mem.h>
  7.  
  8. float square(float);
  9.  
  10. float square(float num)
  11. {
  12.     return(num * num);
  13. }
  14.  
  15. class Torus
  16. {
  17.     private:
  18.         float majr, minr, outr, innr;
  19.  
  20.     public:
  21.         void getoutinn(float, float);
  22.         void getmajmin(float, float);
  23.         void writetofile(FILE *);
  24. };
  25.  
  26. void Torus::getoutinn(float r1, float r2)
  27. {
  28.     if(r1>r2)
  29.         {
  30.         outr = r1;
  31.         innr = r2;
  32.         }
  33.     else
  34.         {
  35.         outr = r2;
  36.         innr = r1;
  37.         }
  38.         minr = (outr - innr) / 2;
  39.         majr = innr + minr;
  40. }
  41.  
  42. void Torus::getmajmin(float r1, float r2)
  43. {
  44.     majr = r1;
  45.     minr = r2;
  46.     outr = majr + minr;
  47.     innr = majr - minr;
  48. }
  49.  
  50. void Torus::writetofile(FILE *fileptr)
  51. {
  52.     int counter;
  53.  
  54.     fputs("/*\n", fileptr);
  55.     fputs("                   *** Torus by Joe's Torus Generator ***\n", fileptr);
  56.     fputs("                  by Joseph Gebis   jgebis@imsasun.imsa.edu\n", fileptr);
  57.     fputs("                               Torus specs:\n", fileptr);
  58.     fprintf(fileptr, "                %s %8.6f   %s %8.6f\n", "Major radius:", majr, "Minor radius:", minr);
  59.     fprintf(fileptr, "                %s %8.6f   %s %8.6f\n", "Outer radius:", outr, "Inner radius:", innr);
  60.     fputs("*/\n\n", fileptr);
  61.     fputs("#declare Torus =\nquartic { <\n", fileptr);
  62.     fprintf(fileptr, "      1.000000");
  63.     for(counter = 1; counter <= 3; counter++)
  64.         {
  65.         fprintf(fileptr, "      0.000000");
  66.         }
  67.     fprintf(fileptr, "      2.000000\n");
  68.     for(counter = 5; counter <= 6; counter++)
  69.         {
  70.         fprintf(fileptr, "      0.000000");
  71.         }
  72.     fprintf(fileptr, "      2.000000");
  73.     fprintf(fileptr, "      0.000000");
  74.     fprintf(fileptr, " %13.6f\n", (-2*(square(majr) + square(minr))));
  75.     for(counter = 10; counter <= 14; counter++)
  76.         {
  77.         fprintf(fileptr, "      0.000000");
  78.         }
  79.     fputs("\n", fileptr);
  80.     for(counter = 15; counter <= 19; counter++)
  81.         {
  82.         fprintf(fileptr, "      0.000000");
  83.         }
  84.     fputs("\n", fileptr);
  85.     fprintf(fileptr, "      1.000000");
  86.     for(counter = 21; counter <= 22; counter++)
  87.         {
  88.         fprintf(fileptr, "      0.000000");
  89.         }
  90.     fprintf(fileptr, "      2.000000");
  91.     fprintf(fileptr, "      0.000000\n");
  92.     fprintf(fileptr, " %13.6f", (2*(square(majr) - square(minr))));
  93.     for(counter = 26; counter <= 29; counter++)
  94.         {
  95.         fprintf(fileptr, "      0.000000");
  96.         }
  97.     fputs("\n", fileptr);
  98.     fprintf(fileptr, "      1.000000");
  99.     fprintf(fileptr, "      0.000000");
  100.     fprintf(fileptr, " %13.6f", (-2*(square(majr) + square(minr))));
  101.     fprintf(fileptr, "      0.000000");
  102.     fprintf(fileptr, " %13.6f\n", ((square(square(majr) - square(minr)))));
  103.     fputs(">  }", fileptr);
  104. }
  105.  
  106. Torus tor;
  107.  
  108. void main(void)
  109. {
  110.     FILE *fileptr;
  111.     char filename[80];
  112.     char format;
  113.     float r1, r2;
  114.  
  115.  
  116.  
  117.     printf("\nOutput torus into what file?  ");
  118.     scanf("%s", filename);
  119.     fflush(stdin);
  120.     printf("Are you inputing (M)ajor/Minor radii or (O)uter/Inner radii?  ");
  121.     scanf("%c", &format);
  122.  
  123.     switch(format)
  124.         {
  125.         case 'm':
  126.         case 'M':
  127.             {
  128.             printf("Input Major radius:   ");
  129.             scanf("%f", &r1);
  130.             printf("Input Minor radius:   ");
  131.             scanf("%f", &r2);
  132.  
  133.             tor.getmajmin(r1, r2);
  134.             }
  135.             break;
  136.         case 'o':
  137.         case 'O':
  138.         case 'i':
  139.         case 'I':
  140.             {
  141.             printf("Input Outer radius:   ");
  142.             scanf("%f", &r1);
  143.             printf("Input Inner radius:   ");
  144.             scanf("%f", &r2);
  145.  
  146.             tor.getoutinn(r1, r2);
  147.             }
  148.             break;
  149.         default:
  150.             break;
  151.         }
  152.  
  153.     if((fileptr = fopen(filename, "w")) == NULL)
  154.         {
  155.         printf("Died");
  156.         exit(0);
  157.         }
  158.  
  159.  
  160.     tor.writetofile(fileptr);
  161.     fclose(fileptr);
  162.  
  163.     textcolor(YELLOW);
  164.     cprintf("Joe's Torus Generator is brought to you by Joseph Gebis");
  165.     textcolor(LIGHTGRAY);
  166. }
  167.